XLAアプリケーションがトランザクション・ログからの読取りを終了した場合は、XLA接続をクローズして不要なブックマークを削除し、明示的にサブスクライブした表をサブスクライブ解除して、正常に終了する必要があります。
XLAへの接続をクローズするには、Connectionオブジェクトでclose
をコールします。
接続がクローズされた後、その接続、セッションまたはサブスクライバを使用しようとすると、 IllegalStateException
がスローされます。その接続から受信したメッセージを継続して使用できますが、接続がクローズされた後、受信したメッセージのacknowledge
メソッドをコールすることはできません。
停止時にXLAブックマークを削除するかどうかは、任意に選択できます。ブックマークを削除すると、トランザクション・ログ内の未読の更新レコードに関連するディスク領域を解放できます。
ブックマークを削除しない場合は、永続サブスクライバで再利用できます。永続サブスクライバが再接続するときにブックマークが使用可能な場合、サブスクライバは、以前の接続が終了した後に発行されたすべての未確認の更新を受信します。ブックマークが存在しており、そのブックマークから読取りを行っているアプリケーションがない場合は、トランザクション・ログのサイズが継続して大きくなり、データベースによって消費されるディスク領域が増加します。
ブックマークを削除するには、JMS Sessionでunsubscribe
をコールします。これにより、ttXlaDeleteBookmark組込みプロシージャが起動され、XLAブックマークが削除されます。
表に対するXLAパブリッシングをオフにするには、ttXlaUnsubscribe組込みプロシージャを使用します。ttXlaSubscribeを使用して表に対するXLAパブリッシングを有効にする場合は、アプリケーションを停止するときにttXlaUnsubscribeを使用して表からのサブスクライブ解除を行う必要があります。
表からのサブスクライブ解除を行う場合は、次のように表を追跡するときに使用される表の名前とブックマークの名前を指定します。
ttXlaUnsubscribe(user.table, bookmark)
たとえば、JDBC CallableStatement
インタフェースを介してttXlaSubscribeをコールするには、次のようにします。
Connection con;
CallableStatement cStmt;
...
cStmt = con.prepareCall("{call ttXlaUnSubscribe(user.table, bookmark)}");
cStmt.execute();
JavaアプリケーションでTimesTen組込みプロシージャを使用する場合の詳細は、「TimesTen組込みプロシージャのコール」を参照してください。組込みプロシージャの詳細は、『Oracle TimesTen In-Memory Database APIリファレンス・ガイド』を参照してください。